package com.hao.task;

import com.hao.dto.DailyStatisticsDTO;
import com.hao.service.EmailService;
import com.hao.service.StatisticsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 每日数据统计定时任务
 */
@Slf4j
@Component
public class DailyStatisticsTask {
    
    @Autowired
    private StatisticsService statisticsService;
    
    @Autowired
    private EmailService emailService;
    
    /**
     * 每天晚上8:30执行数据统计并发送邮件
     * cron表达式：秒 分 时 日 月 周
     */
    @Scheduled(cron = "0 30 20 * * ?")
    public void sendDailyStatisticsEmail() {
        log.info("开始执行每日数据统计任务");
        
        try {
            // 获取今日统计数据
            DailyStatisticsDTO statistics = statisticsService.getTodayStatistics();
            
            // 发送统计邮件
            emailService.sendStatisticsEmail(statistics);
            
            log.info("每日数据统计任务执行完成，总数据条数：{}", statistics.getTotalCount());
            
        } catch (Exception e) {
            log.error("执行每日数据统计任务时发生异常：{}", e.getMessage(), e);
        }
    }
    
    /**
     * 手动触发统计任务（用于测试）
     */
    public void manualTrigger() {
        log.info("手动触发数据统计任务");
        sendDailyStatisticsEmail();
    }
} 